package com.cz.video.common.vod;


import com.cz.video.common.vod.dto.VideoInfo;
import com.cz.video.common.vod.dto.VodPlayAuth;
import com.cz.video.common.vod.dto.VodUploadAuth;
import com.cz.video.common.vod.dto.VodMetaInfo;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

public interface VodProvider extends AutoCloseable {

    /**
     * 所使用的云存储平台
     */
    String vodPlatform = null;


    /**
     * 获取 所使用的云存储平台 服务商
     *
     * @return 返回 所使用的 云存储平台 服务商
     */
    String getService();

    /**
     * 获取 当前平台 *
     *
     * @return
     */
    String getPlatform();


    /**
     * @param name 视频名称
     *             获取音/视频上传地址和凭证
     * @return VodUploadAuth 获取音/视频上传地址和凭证响应数据
     */
    VodUploadAuth createUploadVideo(String name, String fileName);


    /**
     * 获取播放凭证函数
     *
     * @param vid 视频id
     * @return VodPlayAuth 获取播放凭证响应数据
     */
    VodPlayAuth getVideoPlayAuth(String vid);

    /**
     * 刷新上传凭证
     * @param vid 视频id
     * @return 上传凭证
     */
    public VodUploadAuth refreshUploadAuth(String vid);

    /**
     * 校验回调 是否合法
     *
     * @param request 回调请求
     * @return 校验回调响应数据
     */
    boolean checkCallbackValid(HttpServletRequest request);

    /**
     * 获取视频元信息
     * @param videoId
     * @return
     */
    VodMetaInfo getMetaInfoByVid(String videoId);

    /**
     * 获取视频信息
     * @param videoId
     * @return
     */
    VideoInfo getVideoInfoByVid(String videoId);

    /**
     * 获取视频信息
     * @param vidList
     * @return
     */
    List<VideoInfo> getVideoInfoList(List<String> vidList);
}
